From d29e39f1f4778bc80b528254b436c91efd510dae Mon Sep 17 00:00:00 2001 From: "root@localhost.localdomain" Date: Wed, 23 Nov 2005 12:32:44 +0100 Subject: [PATCH] xm-test: add tests for network-attach command Signed-off-by: Murillo Fernandes Bernardes --- tools/xm-test/configure.ac | 1 + tools/xm-test/tests/Makefile.am | 1 + .../network-attach/01_network_attach_pos.py | 48 +++++++++++++++++ .../02_network_attach_detach_pos.py | 54 +++++++++++++++++++ .../03_network_attach_detach_multiple_pos.py | 54 +++++++++++++++++++ .../04_network_attach_baddomain_neg.py | 17 ++++++ .../xm-test/tests/network-attach/Makefile.am | 24 +++++++++ .../tests/network-attach/network_utils.py | 37 +++++++++++++ 8 files changed, 236 insertions(+) create mode 100644 tools/xm-test/tests/network-attach/01_network_attach_pos.py create mode 100644 tools/xm-test/tests/network-attach/02_network_attach_detach_pos.py create mode 100644 tools/xm-test/tests/network-attach/03_network_attach_detach_multiple_pos.py create mode 100644 tools/xm-test/tests/network-attach/04_network_attach_baddomain_neg.py create mode 100644 tools/xm-test/tests/network-attach/Makefile.am create mode 100644 tools/xm-test/tests/network-attach/network_utils.py diff --git a/tools/xm-test/configure.ac b/tools/xm-test/configure.ac index 5bfa2d1d52..224d5fa129 100644 --- a/tools/xm-test/configure.ac +++ b/tools/xm-test/configure.ac @@ -50,6 +50,7 @@ AC_CONFIG_FILES([ tests/memmax/Makefile tests/memset/Makefile tests/migrate/Makefile + tests/network-attach/Makefile tests/pause/Makefile tests/reboot/Makefile tests/restore/Makefile diff --git a/tools/xm-test/tests/Makefile.am b/tools/xm-test/tests/Makefile.am index 45484ab7c6..8ce2c04ff1 100644 --- a/tools/xm-test/tests/Makefile.am +++ b/tools/xm-test/tests/Makefile.am @@ -13,6 +13,7 @@ SUBDIRS = \ list \ memmax \ memset \ + network-attach \ pause \ reboot \ sedf \ diff --git a/tools/xm-test/tests/network-attach/01_network_attach_pos.py b/tools/xm-test/tests/network-attach/01_network_attach_pos.py new file mode 100644 index 0000000000..b2a491b4e2 --- /dev/null +++ b/tools/xm-test/tests/network-attach/01_network_attach_pos.py @@ -0,0 +1,48 @@ +#!/usr/bin/python + +# Copyright (C) International Business Machines Corp., 2005 +# Author: Murillo F. Bernardes + +import sys + +from XmTestLib import * +from network_utils import * + +# Create a domain (default XmTestDomain, with our ramdisk) +domain = XmTestDomain() + +try: + domain.start() +except DomainError, e: + if verbose: + print "Failed to create test domain because:" + print e.extra + FAIL(str(e)) + +# Attach a console to it +try: + console = XmConsole(domain.getName(), historySaveCmds=True) +except ConsoleError, e: + FAIL(str(e)) + +try: + # Activate the console + console.sendInput("input") + # Run 'ls' + run = console.runCmd("ls") +except ConsoleError, e: + saveLog(console.getHistory()) + FAIL(str(e)) + +## Real test +status, msg = network_attach(domain.getName(), console) +if status: + FAIL(msg) + + +## +# Close the console +console.closeConsole() + +# Stop the domain (nice shutdown) +domain.stop() diff --git a/tools/xm-test/tests/network-attach/02_network_attach_detach_pos.py b/tools/xm-test/tests/network-attach/02_network_attach_detach_pos.py new file mode 100644 index 0000000000..7e4559a12f --- /dev/null +++ b/tools/xm-test/tests/network-attach/02_network_attach_detach_pos.py @@ -0,0 +1,54 @@ +#!/usr/bin/python + +# Copyright (C) International Business Machines Corp., 2005 +# Author: Murillo F. Bernardes + +import sys +import re +import time + +from XmTestLib import * +from network_utils import * + +# Create a domain (default XmTestDomain, with our ramdisk) +domain = XmTestDomain() + +try: + domain.start() +except DomainError, e: + if verbose: + print "Failed to create test domain because:" + print e.extra + FAIL(str(e)) + +# Attach a console to it +try: + console = XmConsole(domain.getName(), historySaveCmds=True) +except ConsoleError, e: + FAIL(str(e)) + +try: + # Activate the console + console.sendInput("input") + # Run 'ls' + run = console.runCmd("ls") +except ConsoleError, e: + saveLog(console.getHistory()) + FAIL(str(e)) + +## Real test - attach and detach +status, msg = network_attach(domain.getName(), console) +if status: + FAIL(msg) + +status, msg = network_detach(domain.getName(), console) +if status: + FAIL(msg) + + + +# Close the console +console.closeConsole() + +# Stop the domain (nice shutdown) +domain.stop() diff --git a/tools/xm-test/tests/network-attach/03_network_attach_detach_multiple_pos.py b/tools/xm-test/tests/network-attach/03_network_attach_detach_multiple_pos.py new file mode 100644 index 0000000000..e13e1ff135 --- /dev/null +++ b/tools/xm-test/tests/network-attach/03_network_attach_detach_multiple_pos.py @@ -0,0 +1,54 @@ +#!/usr/bin/python + +# Copyright (C) International Business Machines Corp., 2005 +# Author: Murillo F. Bernardes + +import sys +import re +import time + +from XmTestLib import * +from network_utils import * + +# Create a domain (default XmTestDomain, with our ramdisk) +domain = XmTestDomain() + +try: + domain.start() +except DomainError, e: + if verbose: + print "Failed to create test domain because:" + print e.extra + FAIL(str(e)) + +# Attach a console to it +try: + console = XmConsole(domain.getName(), historySaveCmds=True) +except ConsoleError, e: + FAIL(str(e)) + +try: + # Activate the console + console.sendInput("input") + # Run 'ls' + run = console.runCmd("ls") +except ConsoleError, e: + saveLog(console.getHistory()) + FAIL(str(e)) + +for i in range(10): + print "Attaching %d device" % i + status, msg = network_attach(domain.getName(), console) + if status: + FAIL(msg) + + print "Detaching %d device" % i + status, msg = network_detach(domain.getName(), console, i) + if status: + FAIL(msg) + +# Close the console +console.closeConsole() + +# Stop the domain (nice shutdown) +domain.stop() diff --git a/tools/xm-test/tests/network-attach/04_network_attach_baddomain_neg.py b/tools/xm-test/tests/network-attach/04_network_attach_baddomain_neg.py new file mode 100644 index 0000000000..838d66c32a --- /dev/null +++ b/tools/xm-test/tests/network-attach/04_network_attach_baddomain_neg.py @@ -0,0 +1,17 @@ +#!/usr/bin/python + +# Copyright (C) International Business Machines Corp., 2005 +# Author: Murillo F. Bernardes + +from XmTestLib import * + +status, output = traceCommand("xm network-attach NOT-EXIST") + +eyecatcher = "Error" +where = output.find(eyecatcher) +if status == 0: + FAIL("xm block-attach returned bad status, expected non 0, status is: %i" % status ) +elif where == -1: + FAIL("xm block-attach returned bad output, expected Error, output is: %s" % output ) + + diff --git a/tools/xm-test/tests/network-attach/Makefile.am b/tools/xm-test/tests/network-attach/Makefile.am new file mode 100644 index 0000000000..00acf23178 --- /dev/null +++ b/tools/xm-test/tests/network-attach/Makefile.am @@ -0,0 +1,24 @@ + +SUBDIRS = + +TESTS = 01_network_attach_pos.test \ + 02_network_attach_detach_pos.test \ + 03_network_attach_detach_multiple_pos.test \ + 04_network_attach_baddomain_neg.test + +DISABLED = + +EXTRA_DIST = $(TESTS) $(XFAIL_TESTS) network_utils.py + +TESTS_ENVIRONMENT=@TENV@ + +%.test: %.py + cp $< $@ + chmod +x $@ + +clean-local: am_config_clean-local + +am_config_clean-local: + rm -f *test + rm -f *log + rm -f *~ diff --git a/tools/xm-test/tests/network-attach/network_utils.py b/tools/xm-test/tests/network-attach/network_utils.py new file mode 100644 index 0000000000..a1ccdf6ac4 --- /dev/null +++ b/tools/xm-test/tests/network-attach/network_utils.py @@ -0,0 +1,37 @@ +#!/usr/bin/python + +# Copyright (C) International Business Machines Corp., 2005 +# Author: Murillo F. Bernardes + +from XmTestLib import * + +def count_eth(console): + try: + run = console.runCmd("ifconfig -a | grep eth") + except ConsoleError, e: + FAIL(str(e)) + return = len(run['output'].splitlines()) + +def network_attach(domain_name, console): + eths_before = count_eth(console) + status, output = traceCommand("xm network-attach %s" % domain_name) + if status != 0: + return -1, "xm network-attach returned invalid %i != 0" % status + + eths_after = count_eth(console) + if (eths_after != (eths_before+1)): + return -2, "Network device is not actually connected to domU" + + return 0, None + +def network_detach(domain_name, console, num=0): + eths_before = count_eth(console) + status, output = traceCommand("xm network-detach %s %d" % (domain_name, num)) + if status != 0: + return -1, "xm network-attach returned invalid %i != 0" % status + + eths_after = count_eth(console) + if eths_after != (eths_before-1): + return -2, "Network device was not actually disconnected from domU" + + return 0, None -- 2.30.2